04. 将更改推送到远程仓库
L1 - Git Push 理论
查看 commit
让我们来看看我的仓库中的 commit 。
终端正在显示项目 commit 的日志。
我使用了以下 log 命令来显示这些 commit
$ git log --oneline --graph --decorate --all
不过这些 commit 仅位于本地仓库,还未推送到远程仓库。当 commit 推送到远程仓库后,日志中将出现远程分支指示符。由于日志中当前没有远程分支指示符,我们便可以说远程仓库中没有 commit 。但是为了百分百确定,我们来看看 GitHub 上的远程仓库,看看是否存在一些 commit 。
远程仓库不包含任何 commit ,所以 GitHub 显示出仓库的设置页面。
由于我们还未向 GitHub 推送任何 commit 更新,它仍然在向我们显示设置屏幕,告诉我们如何将本地仓库连接到远程仓库并推送一些 commit 。由于我们看到的仍然是设置屏幕,因此可以知道远程仓库中没有 commit 。
推送 commits
要将本地 commits 推送到远程仓库,你需要使用
git push
命令。你要提供远程仓库简写名以及用于容纳你的 commit 的分支名:
$ git push <remote-shortname> <branch>
我的远程仓库的简写名为
origin
,并且我想推送的 commit 位于
master
分支上。那么,我要使用以下命令将我的 commit 推送到 GitHub 上的远程仓库:
$ git push origin master
终端现在正在显示
git push
命令。它向我索取用户名、密码(不显示出来),然后显示关于它如何推送 commit 的信息。
有几点需要注意:
-
你可能需要输入用户名和密码,这取决于你如何配置 GitHub 的以及使用的远程 URL 。
-
如果你使用的是 HTTP 版本(而不是
ssh版本)的远程仓库,就需要提供用户名和密码。 - 如果你配置 GitHub 使用 SSH 协议,并提供过 SSH 密匙,就不需要执行上一步。如果你对使用 SSH 连接 GitHub 感兴趣,请参阅 使用 SSH 连接 GitHub 文档 。
-
如果你使用的是 HTTP 版本(而不是
-
如果你要输入用户名和密码,用户名会在输入后显示出来,但密码不会显示。只需继续输入密码,完成后按 Enter 键即可。
- 如果你的密码出错,不用担心,它会让你重新输入
- Git 会压缩文件使之变小,然后将其推送至远程仓库
-
这里创建了一个新分支,在页面底部可看到
[new branch],后面是master -> master
现在我们来看 GitHub:
我的整个项目都位于 GitHub 上!
我们的项目位于 GitHub 上 - 这太酷了,也让我们的工作变得很轻松!GitHub 有一个很棒的功能,即它会自动显示 README 文件的内容,这非常有用。
GitHub 还会显示很多关于我们仓库的详细信息。现在它显示仓库中有:
- 三个 commit
- 一个分支
- 一名贡献者
_ GitHub 上的项目主页显示关于仓库的信息。_
在继续之前,我们来检查一下本地仓库,看看在推送更改后它有何变化。
运行以下命令:
$ git log --oneline --graph --decorate --all
注意:确认已包含
--decorate
和
--all
选项。
终端显示运行
git log --oneline --graph --decorate --all
后的结果。现在出现了
origin/master
跟踪分支。
现在我们输出中有一个标记 (marker)!该标记为
origin/master
,并被称为
跟踪分支
。跟踪分支的名称包含远程仓库的简写名及分支名称。所以跟踪分支
origin/master
告诉我们远程仓库
origin
有一个
master
分支,指向 commit
9b7d28f
(并包含
9b7d28f
前的所有 commit )。这非常有用,因为这意味着我们可以在本地仓库跟踪远程仓库的信息!
需要
注意的一点
是,这个
origin/master
跟踪分支并不能实时表现被跟踪分支在远程仓库上的位置。如果我们之外的其他人对远程仓库做了更改,我们本地仓库中的
origin/master
跟踪分支不会移动。我们必须告诉它检查更新,
它才会
移动。我们将在下一部分介绍如何操作。
小结
git push
命令用于从本地仓库向远程仓库推送 commit 。
$ git push origin master
git push
命令需要:
- 你想向其推送 commit 的远程仓库的简写名
- 包含你想推送的 commit 的分支